import java.util.Arrays;
import java.util.Scanner;
public class test {
    /*给你一个数组 maximumHeight ，其中 maximumHeight[i] 表示第 i 座塔可以达到的 最大 高度。
    你的任务是给每一座塔分别设置一个高度，使得：
    第 i 座塔的高度是一个正整数，且不超过 maximumHeight[i] 。
    所有塔的高度互不相同。
    请你返回设置完所有塔的高度后，可以达到的 最大 总高度。如果没有合法的设置，返回 -1 。*/
    public static long add(int[] arr) {
        Arrays.sort(arr);
        long temp=arr[arr.length-1];
        for(int i=arr.length-2;i>=0;i--){
            arr[i]=Math.min(arr[i],arr[i+1]-1);
            if(arr[i]<=0)
                return -1;
            temp+=arr[i];
        }
        return temp;
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        long maxsum=add(arr);
        System.out.println(maxsum);
    }
}
